//  @ Project : GagalPanen
//  @ File Name : cell.hpp
//  @ Date : 3/9/2011
//  @ Author : Denis
//
//


#if !defined(_CELL_H)
#define _CELL_H

#include <fstream>
#include "gameinterface.hpp"
#include "cellinterface.hpp"

class Cell {
public:
  // new game constructor
  Cell(GameInterface* game);

  // load game constructor
  Cell(GameInterface* game, std::ifstream& is);

  virtual void save(std::ofstream& os);

  virtual ~Cell();
  virtual void advanceDay() = 0;
  virtual void advanceTime() = 0;
  virtual bool isEnterable() = 0;
  virtual bool isPlantable() = 0;
  virtual bool isSteppable() = 0;
  GridMap* getContainingMap();
  int getX();
  int getY();

protected:
  GameInterface* game_;
  bool containsUnsteppableCreature();
};

#endif  //_CELL_H
